import time
from telnetlib import EC

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from comm.selenium_util import SeleniumUtil


#通用关键字函数类
class BaseKeyword(SeleniumUtil):

    # 创建浏览器对象
    def __init__(self, driver):
        super().__init__(driver)

    #通用登录
    def login(self):
        self.sel_get("https://www.zhipin.com/web/user/?ka=header-login")
        time.sleep(1)
        self.sel_click('//*[@id="wrap"]/div/div[2]/div[2]/div[1]')
        while self.sel_get_current_url() == 'https://www.zhipin.com/web/user/?ka=header-login':
            time.sleep(5)
        time.sleep(2)
        self.sel_click('/html/body/div[8]/div[2]/div[1]/a/i')

    #通用菜单搜索
    def query(self):
        self.sel_get('https://www.zhipin.com/shenzhen/?ka=header-home')
        # 设置隐式等待时间为10秒
        # 设置显式等待，等待最多10秒直到某个条件发生

        # 设置显式等待的最大重试次数和超时时间
        max_retries = 5
        timeout = 10

        # 在这里添加其他操作
        for _ in range(max_retries):
            try:
                # 设置显式等待，等待最多timeout秒直到某个条件发生
                wait = WebDriverWait(self.driver, timeout)
                wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/div[2]/p/input')))

                # 在这里添加其他操作

                # 如果成功找到元素，退出循环
                break
            except (Exception):
                # 处理超时或元素失效的情况
                print("超时或元素失效。正在重试...")


        time.sleep(1)
        self.sel_input('//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/div[2]/p/input', "测试工程师")
        time.sleep(1)
        self.sel_click('//*[@id="wrap"]/div[3]/div/div[1]/div[1]/form/button')
        time.sleep(1)
